import socket
import threading
import sys

def main():
    # 创建 TCP 客户端套接字并连接到本地服务器的 8080 端口
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect(('127.0.0.1', 8080))
    
    # 处理控制台输入并发送给服务器的函数
    def send_messages():
        while True:
            try:
                # 读取控制台输入
                input_text = sys.stdin.readline()
                # 去除换行符并转换为字节流发送
                client.send(input_text.strip().encode('utf-8'))
            except Exception as e:
                print(f"发送消息时出错: {e}")
                break
    
    # 启动线程处理输入发送
    send_thread = threading.Thread(target=send_messages)
    send_thread.daemon = True  # 设置为守护线程，主程序退出时线程也退出
    send_thread.start()
    
    # 主循环：接收服务器消息并打印
    print("开始聊天")
    while True:
        try:
            # 接收服务器数据（缓冲区大小 1024 字节）
            data = client.recv(1024)
            if not data:
                # 服务器关闭连接
                print("服务器已断开连接")
                break
            # 解码字节流为字符串并打印
            print(f"收到消息: {data.decode('utf-8')}")
        except Exception as e:
            print(f"接收消息时出错: {e}")
            break
    
    # 关闭客户端连接
    client.close()

if __name__ == "__main__":
    main()